A test harness comprises a collection of tests designed to verify proper behavior of a program. A test establishes an environment for the program, invokes one or more subroutines of the program, and compares one or more results of the subroutines to one or more expected results for the subroutines. The one or more expected results are hard-coded into the test. As one shortcoming, the expected results for the subroutines must be known when designing the test. It is desirable for the test harness to be developed independently from the determination of the expected results.
As another shortcoming, adjustments to the subroutines of the program require modifications to the test harness. For example, a test designer spends time manually computing new expected results for the subroutines based on the adjustments to the subroutines. The test designer must then manually update the expected values of the tests of the test harness with the new expected results. For example, the test designer must hard-code the new results into the test, which adds additional lines of code. The additional lines of code increase a margin of error for the test harness and increase difficulty of debugging the test harness.
Thus, a need exists for providing a reduction in time and/or effort required to develop and maintain one or more test harnesses for one or more programs. A further need exists for providing a reduction in number of lines of code for test harnesses.